package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.List;

/**
 * 违法查询服务
 */
public interface DubboVehicleViolationService {
	/**
	 * 查询违法数据量
	 * @param beginDay 开始时间
	 * @param endDay 结束时间
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param behavior 违法类型
	 * @param isWorkingDay  是否工作日
	 * @param isOffsite 现场/非现场数据
	 * @param isDisposed 是否已处理
	 * @return  &lt; int &gt;
	 */
	public ResultPojo countViolations(String token, String beginDay,String endDay,String licenseType,String licenseNum,String behavior,String isWorkingDay,String isOffsite,String isDisposed);
	/**
	 * 查询违法数据列表
	 * @param beginDay 开始时间
	 * @param endDay 结束时间
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param behavior 违法类型
	 * @param addr 违法地址
	 * @param isWorkingDay  是否工作日
	 * @param isOffsite 现场/非现场数据
	 * @param isDisposed 是否已处理
	 * @param page 分页
	 * @return Page &lt; ViolationInfoDto &gt;
	 */
	public ResultPojo getViolationsList(String token, String beginDay,String endDay,String licenseType,String licenseNum,String behavior,String addr,String isWorkingDay,String isOffsite,String isDisposed,Page page);

	/**
	 * 查询多次违法未处理
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param page 分页信息
	 * @return Page &lt; ViolationByLicenseDisposedDto &gt;
	 */
	public ResultPojo queryMultUndisposedViolations(String token, String licenseType,String licenseNum,Page page);


	/**
	 * 影响安全驾驶行为分析
	 *
	 * @param id          过车信息ID String 可以为null
	 * @param licenseType 号牌类型  String 可为null
	 * @param vehType     车辆类型  String 可为null
	 * @param licenseNum  号牌号码  String 可以为null，支持模糊查询
	 * @param vehColor    车身颜色  String 可为null
	 * @param vehBrand    车辆品牌  String 可为null
	 * @param vehBrandSub 车辆子品牌  String 可为null
	 * @param vehBrandBirth 车辆年款  String 可为null
	 * @param pendant 挂件  String 可为null   1：有挂件 0：无
	 * @param chemicals 危化品  String 可为null   1：危化品 0：非
	 * @param yellowLabel  黄标车 String 可为null   1：黄标车 0：非
	 * @param leftShield  放下副驾驶遮阳板 String 可为null   1：放下 0：非
	 * @param rightShield  放下主驾驶遮阳板 String 可为null   1：放下 0：非
	 * @param leftBelt     副驾驶 安全带 String 可为null   1：有系 0：非
	 * @param rightBelt    主驾驶 安全带 String 可为null   1：有系 0：非
	 * @param leftCallup   副驾驶 打电话 String 可为null   1：打电话 0：非
	 * @param rightCallup  主驾驶 打电话 String 可为null   1：打电话 0：非
	 * @param startDay    分析起始日期  String 可为null
	 * @param endDay      分析截止日期  String 可为null
	 * @param deptIds    部门编号  List<String> 可以为null
	 * @param pointIds    卡口编号  List<String> 可以为null
	 * @param directionCode 卡口方向  String 可以为null
	 * @param minSpeed    速度范围下限  Integer 可以为null
	 * @param maxSpeed    速度范围上限  Integer 可以为null
	 * @param vioCodeList     影响安全驾驶行为代码 String 可以为null
	 * @param page        分页信息 Page 不可为null,必须传入pagesize,currentPage
	 * @return 包含过车信息的Page
	 */
	public ResultPojo getAffectSafeBehavior(String token, String id, String licenseType, String vehType, String licenseNum, String vehColor, String vehBrand, String vehBrandSub,String vehBrandBirth, String pendant,String chemicals,String yellowLabel,String leftShield,String rightShield,String leftBelt,String rightBelt,String leftCallup,String rightCallup, String startDay, String endDay,List<String> deptIds, List<String> pointIds, String directionCode, Integer minSpeed, Integer maxSpeed,List<String> vioCodeList, Page page);


	/**
	 * 一月内违法画像
	 */
	public ResultPojo getViolationProfile(String token);

	/**
	 * 最近一天违法概览
	 */
	public ResultPojo getViolationSurvey(String token);
}
